package org.batatasframework.properties.macro;

import org.batatasframework.expression.ExpressionClause;
import org.batatasframework.properties.PropertiesResource;
import org.batatasframework.properties.beans.InternalProperitesGroup;
import org.batatasframework.properties.beans.InternalPropertiesDefine;

/**
 * 处理宏指令的处理器接口，把已经定义的宏指令交给指定的处理器进行处理
 * @author jackson
 *
 */
public interface MacroCommandHandler {
	InternalPropertiesDefine beforeDefine(MacroCommand command, PropertiesResource resource, InternalPropertiesDefine define);
	
	InternalPropertiesDefine afterDefine(MacroCommand command, PropertiesResource resource, InternalPropertiesDefine define);
	
	InternalProperitesGroup beforeGroup(MacroCommand command, PropertiesResource resource, InternalPropertiesDefine define, InternalProperitesGroup proGroup);
	
	InternalProperitesGroup afterGroup(MacroCommand command, PropertiesResource resource, InternalPropertiesDefine define, InternalProperitesGroup proGroup);
	
	ExpressionClause readItem(MacroCommand command, PropertiesResource resource, InternalPropertiesDefine define, InternalProperitesGroup proGroup, ExpressionClause ec);
	
//	void execute(MacroCommand command, String value);
}
